package com.elitel.frame.base.service;

import com.elitel.frame.main.entity.BaseFieldconfig;
import com.elitel.frame.main.entity.CfgField;
import com.elitel.frame.main.entity.ext.BaseFieldconfigExt;
import com.elitel.frame.main.entity.vo.PageRequestVo;
import com.elitel.frame.main.entity.vo.PageResponseVo;

import java.util.List;

/**
 * @Description 元数据配置-其他配置服务接口
 * @author guoyanfei
 */
public interface BaseFieldconfigService {
	
	/**
     * @Description 分页查询元数据配置-其他配置信息
     * @param PageRequestVo<BaseFieldconfig>
     * @return List<PageResponseVo>集合
     * @author guoyanfei
     */
	PageResponseVo<BaseFieldconfigExt> getListByPage(PageRequestVo<BaseFieldconfigExt> pr);
	
	/**
     * @Description 新增其他配置信息
     * @param BaseFieldconfig实体
     * @return  插入结果
     * @author guoyanfei
     */
	Integer insertInfo(BaseFieldconfig baseFieldconfig);
	
	/**
     * @Description 修改其他配置信息
     * @param BaseFieldconfig实体
     * @return  修改结果
     * @author guoyanfei
     */
	Integer updateInfo(BaseFieldconfig baseFieldconfig);
	
	/**
     * @Description 批量删除其他配置信息
     * @param guids(主键串,以','分割)
     * @return  修改结果
     * @author guoyanfei
     */
	void batchDelInfo(String guids);
	
	/**
     * @Description 通过数据库主键和表名称查询该表字段信息
     * @param dbkey(数据库主键),tablename(表名称)
     * @return  字段配置集合
     * @author guoyanfei
     */
	List<CfgField> selectFieldBydbkeyAndtable(String dbkey,String tablename);
	
	/**
     *@Description 通过表标识查询该表所有的其他配置信息
     * @param dtconfigid(表标识)
     * @return List<BaseFieldconfigExt>集合
     * @author guoyanfei
     */
	List<BaseFieldconfigExt> getAllFieldConfig(String dtconfigid);
	
	/**
     *@Description 通过字段ID查询其他配置信息
     * @param fieldId(字段ID)
     * @return BaseFieldconfig实体
     * @author guoyanfei
     */
	BaseFieldconfig getFieldConfigByFieldId(String fieldId);
	
	/**
	 * @Description 通过表标识查询表别名
	 * @param dtConfigId
	 * @return 表别名
	 * @author guoyanfei
	 */
	String getAlterNameBydtConfigId(String dtConfigId);
	
	/**
	 * @Description 通过视图标识和关联字段查询外键表别名
	 * @param dtConfigId
	 * @param linkField
	 * @return
	 */
	String getAlternameBydtConfigIdAndLinkField(String dtConfigId,String linkField);
	
	/**
	 * @Description 通过字段标识和视图标识查询该字段是否配置枚举
	 * @param fieldId
	 * @param dtConfigId
	 * @return BaseFieldconfig实体
	 * @author guoyanfei
	 */
	BaseFieldconfig getFieldEnumeration(String fieldId,String dtConfigId);


	/**
	 * TODO: 根据 dtConfigId 批量删除
	 * @param dtConfigId
	 * @return
	 */
	Integer batchDelete(String dtConfigId);

}
